/**
 ****************************************
 * @file wifi_drv.h
 * @author: AnRui
 * @version 0.1
 * @date  : 2025-08-09
 * @copyright Copyright (c) 2025
 * @desc:
 *       使用uart0与乐鑫的wifi模块沟通
 *       使用dma加快数据传输
 * ***************************************
 */
#ifndef __WIFI_DRV_H__
#define __WIFI_DRV_H__
#include "gd32f30x.h"
#include "systick.h"
#include <stdio.h>
#include <string.h>
 /*****************usart config************************/
#define  WIFI_UART_NO               USART2
#define  WIFI_UART_RCU              RCU_USART2
#define  WIFI_UART_BAURATE          115200
#define  WIFI_UART_TX_PORT          GPIOB
#define  WIFI_UART_TX_RCU           RCU_GPIOB
#define  WIFI_UART_TX_PIN           GPIO_PIN_10
#define  WIFI_UART_RX_PORT          GPIOB
#define  WIFI_UART_RX_RCU           RCU_GPIOB
#define  WIFI_UART_RX_PIN           GPIO_PIN_11
#define  WIFI_UART_IRQ              USART2_IRQn
#define  WIFI_UART_IRQ_PRIORITY     0,0
/*****************dma config************************/
#define  WIFI_DMA_NO                DMA0
#define  WIFI_DMA_RCU               RCU_DMA0
#define  WIFI_DMA_CH                DMA_CH2
/*****************wifi config************************/
#define  WIFI_UART_ENABLE_PORT      GPIOG
#define  WIFI_UART_ENABLE_RCU       RCU_GPIOG
#define  WIFI_UART_ENABLE_PIN       GPIO_PIN_7
/*****************buf config************************/
#define WIFI_MAX_BUF_SIZE           256


/*****************FUNCTION************************/
/**
 * @desc  : WIFI驱动初始化
 * @date  : 2025-08-11
 * @author: AnRui
 * @note  :
 */
void WIFIDrvInit(void);

/**
 * @desc  : 向WIFI模块发送数据
 * @date  : 2025-08-11
 * @author: AnRui
 * @param : data - {参数说明}:
 * @note  :
 */
void SendDataToWIFI(char* data);


/**
 * @desc  : 获取从WIFI模块返回的数据
 * @date  : 2025-08-11
 * @author: AnRui
 * @return: char*
 * @note  :
 */
char* GetDataFromWIFI(void);


/**
 * @desc  : 清理整个缓冲区
 * @date  : 2025-08-15
 * @author: AnRui
 * @note  :
 */
void  WIFIClearRecvDataBuf(void);


/**
 * @desc  : wifi模块硬件复位
 * @date  : 2025-08-11
 * @author: AnRui
 * @note  :
 */
void WIFIHardReset(void);
#endif
